package com.my12306.common.util.quartz.scheduler;

import com.my12306.common.model.po.ScheduleJobPo;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerKey;

import java.util.List;

/**
 * @Author:苏牧夕
 * @Date:2020/5/29 2:36
 * @Version 1.0
 */
public interface BaseScheduler {
    /**
     * 添加定时任务
     *
     * @param scheduler
     */
    void addJob(Scheduler scheduler, ScheduleJobPo scheduleJobPo, JobKey jobKey, TriggerKey triggerKey) throws SchedulerException;

    /**
     * 修改定时任务
     *
     * @param scheduler
     */
    void updateJob(Scheduler scheduler, ScheduleJobPo scheduleJobPo, TriggerKey triggerKey) throws SchedulerException;

    /**
     * 根据定时任务的jobKey来暂停任务
     *
     * @param scheduler
     * @param jobKey
     */
    void pauseJob(Scheduler scheduler, JobKey jobKey);

    /**
     * 暂停所有定时任务
     *
     * @param scheduler
     */
    void pauseAllJob(Scheduler scheduler);

    /**
     * 根据定时任务的Jobkey唤醒任务
     *
     * @param scheduler
     * @param jobKey
     */
    void resumeJob(Scheduler scheduler, JobKey jobKey);

    /**
     * 唤醒所有被暂停的定时任务
     */
    void resumeAllJob(Scheduler scheduler);

    /**
     * 根据jobKey删除定时任务、和触发器
     *
     * @param scheduler
     * @param jobKey
     * @param triggerKey
     */
    void deleteJob(Scheduler scheduler, JobKey jobKey, TriggerKey triggerKey);

    /**
     * 批量删除任务
     *
     * @param scheduler
     * @param jobKeys
     */
    void deleteAllJob(Scheduler scheduler, List<JobKey> jobKeys);
}
